// 导入封装好的请求工具，用于发送HTTP请求
import request from '@/utils/request'

/**
 * 获取学员列表数据
 * @param {Object} query - 查询参数对象，包含分页、筛选条件等
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function listStudent(query) {
  return request({
    url: '/jiaxiao/student/list',  // 请求的URL地址
    method: 'get',                 // 请求方法为GET
    params: query                  // 将查询参数添加到URL的查询字符串中
  })
}

/**
 * 获取单个学员的详细信息
 * @param {number|string} studentId - 学员ID，用于唯一标识一个学员
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function getStudent(studentId) {
  return request({
    url: '/jiaxiao/student/' + studentId,  // 拼接学员ID到URL中
    method: 'get'                          // 请求方法为GET
  })
}

/**
 * 添加新学员
 * @param {Object} data - 新学员的信息数据对象
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function addStudent(data) {
  return request({
    url: '/jiaxiao/student',  // 请求的URL地址
    method: 'post',           // 请求方法为POST
    data: data                // 将学员数据作为请求体发送
  })
}

/**
 * 更新学员信息
 * @param {Object} data - 包含更新后学员信息的数据对象，需包含学员ID
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function updateStudent(data) {
  return request({
    url: '/jiaxiao/student',  // 请求的URL地址
    method: 'put',            // 请求方法为PUT（通常用于更新操作）
    data: data                // 将更新后的学员数据作为请求体发送
  })
}

/**
 * 删除指定学员
 * @param {number|string} studentId - 要删除的学员ID
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function delStudent(studentId) {
  return request({
    url: '/jiaxiao/student/' + studentId,  // 拼接学员ID到URL中
    method: 'delete'                       // 请求方法为DELETE
  })
}

/**
 * 改变学员状态
 * @param {number|string} studentId - 学员ID
 * @param {number|string} toStatus - 目标状态值
 * @param {string} remark - 状态变更备注信息
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果
 */
export function changeStudentStatus(studentId, toStatus, remark) {
  return request({
    url: `/jiaxiao/student/changeStatus/${studentId}`,  // 拼接学员ID到URL中
    method: 'put',                                      // 请求方法为PUT
    params: { toStatus, remark }                        // 将状态和备注作为查询参数
  })
}

/**
 * 导出学员数据
 * @param {Object} query - 导出数据的查询条件
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果（通常是文件流）
 */
export function exportStudent(query) {
  return request({
    url: '/jiaxiao/student/export',  // 请求的URL地址
    method: 'post',                  // 请求方法为POST
    params: query,                   // 导出条件作为查询参数
    responseType: 'blob'             // 指定响应类型为blob，用于处理文件流
  })
}

/**
 * 获取学员数据导入模板
 * @returns {Promise} - 返回一个Promise对象，用于处理请求结果（通常是文件流）
 */
export function importTemplate() {
  return request({
    url: '/jiaxiao/student/importTemplate',  // 请求的URL地址
    method: 'post',                          // 请求方法为POST
    responseType: 'blob'                     // 指定响应类型为blob，用于处理文件流
  })
}
